Learn in 10 minutes

Learn in 10 minutes

10분 안에 R 배우기

R은 통계 컴퓨팅, 데이터 분석, 시각화를 위한 강력한 프로그래밍 언어이자 환경입니다. 이 튜토리얼에서는 R 프로그래밍을 시작하는 데 필요한 핵심 개념들을 다룹니다.

1. R 시작하기

간단한 프로그램부터 시작해보겠습니다. R이나 RStudio를 열고 다음 코드를 입력하세요:

print("Hello, World!")

R 콘솔에서도 실행할 수 있습니다. 출력 결과는 다음과 같습니다:

[1] "Hello, World!"

이 간단한 프로그램은 R의 기본 출력 기능을 보여줍니다. print() 함수는 콘솔에 텍스트 정보를 표시합니다.

2. 기본 문법과 변수

R의 문법은 통계 컴퓨팅과 데이터 분석을 위해 설계되었습니다. 기본적인 변수 할당과 연산을 살펴보겠습니다.

# 이것은 주석입니다
x <- 5  # <- 연산자를 사용한 할당
y = 10   # = 연산자를 사용한 할당 (덜 일반적)
print(x + y)

R의 기본 문법 규칙:

  • 할당: 변수 할당에는 <- 사용 (권장) 또는 =
  • 주석: 한 줄 주석은 #으로 시작
  • 함수: 함수 호출에는 괄호 () 사용
  • 벡터: R은 벡터화됨 - 연산이 전체 벡터에 적용됨

3. 데이터 타입과 구조

R에는 통계 컴퓨팅을 위한 여러 기본 데이터 타입과 구조가 있습니다.

3.1 기본 데이터 타입

# 숫자형 (실수)
num <- 3.14
print(class(num))

# 정수형
int <- 42L
print(class(int))

# 문자형 (문자열)
text <- "Hello R"
print(class(text))

# 논리형 (불리언)
flag <- TRUE
print(class(flag))

3.2 벡터

벡터는 R의 기본 데이터 구조입니다. 숫자형, 문자형, 논리형 데이터를 담을 수 있는 1차원 배열입니다.

# 벡터 생성
numeric_vector <- c(1, 2, 3, 4, 5)
character_vector <- c("apple", "banana", "cherry")
logical_vector <- c(TRUE, FALSE, TRUE)

# 벡터 연산
print(numeric_vector * 2)  # 각 요소를 2로 곱함
print(numeric_vector + 1)  # 각 요소에 1을 더함
print(length(numeric_vector))  # 벡터 길이 가져오기

3.3 리스트

리스트는 서로 다른 타입의 요소를 담을 수 있는 유연한 컨테이너입니다.

# 리스트 생성
my_list <- list(
  name = "John",
  age = 30,
  scores = c(85, 92, 78),
  active = TRUE
)

# 리스트 요소 접근
print(my_list$name)
print(my_list[["age"]])
print(my_list[[3]])

3.4 데이터 프레임

데이터 프레임은 R에서 데이터 분석을 위한 가장 중요한 데이터 구조입니다. 행과 열이 있는 테이블과 유사합니다.

# 데이터 프레임 생성
df <- data.frame(
  name = c("Alice", "Bob", "Charlie"),
  age = c(25, 30, 35),
  score = c(88, 92, 85)
)

# 데이터 프레임 보기
print(df)
print(str(df))  # 데이터 프레임 구조
print(summary(df))  # 요약 통계

4. 기본 연산

R은 수학적 및 논리적 연산을 위한 다양한 연산자들을 제공합니다.

# 산술 연산
a <- 10
b <- 3

print(a + b)  # 덧셈
print(a - b)  # 뺄셈
print(a * b)  # 곱셈
print(a / b)  # 나눗셈
print(a ^ b)  # 거듭제곱
print(a %% b) # 나머지
print(a %/% b) # 정수 나눗셈

# 비교 연산
print(a > b)   # 보다 큼
print(a == b)  # 같음
print(a != b)  # 같지 않음
print(a <= b)  # 보다 작거나 같음

# 논리 연산
print(TRUE & FALSE)  # AND
print(TRUE | FALSE)  # OR
print(!TRUE)         # NOT

5. 제어 구조

R은 프로그램 흐름을 위한 표준 제어 구조를 제공합니다.

5.1 if 문

age <- 20

if (age >= 18) {
  print("성인")
} else if (age >= 13) {
  print("청소년")
} else {
  print("어린이")
}

5.2 for 반복문

# 벡터 반복
fruits <- c("apple", "banana", "cherry")
for (fruit in fruits) {
  print(fruit)
}

# 시퀀스 사용
for (i in 1:5) {
  print(paste("숫자:", i))
}

5.3 while 반복문

count <- 1
while (count <= 5) {
  print(count)
  count <- count + 1
}

6. 함수

R의 함수는 특정 작업을 위한 재사용 가능한 코드 블록입니다.

# 기본 함수 정의
calculate_area <- function(length, width) {
  area <- length * width
  return(area)
}

# 함수 호출
result <- calculate_area(5, 3)
print(result)

# 기본 매개변수가 있는 함수
greet <- function(name = "Guest") {
  return(paste("Hello,", name))
}

print(greet("Alice"))
print(greet())  # 기본 매개변수 사용

7. 데이터 조작

R은 데이터 조작에 뛰어납니다. 몇 가지 기본 연산을 살펴보겠습니다.

# 샘플 데이터 프레임
students <- data.frame(
  name = c("Alice", "Bob", "Charlie", "Diana"),
  math_score = c(85, 92, 78, 95),
  science_score = c(88, 90, 82, 96),
  grade = c("A", "A", "B", "A")
)

# 데이터 부분집합
print(students[students$math_score > 85, ])  # 수학 점수가 85보다 큰 행
print(students[, c("name", "math_score")])   # 특정 열

# 새 열 추가
students$total_score <- students$math_score + students$science_score
students$average_score <- students$total_score / 2

print(students)

8. 데이터 시각화

R은 특히 ggplot2와 함께 강력한 시각화 기능을 가지고 있습니다.

# 기본 플로팅 (기본 R)
# 샘플 데이터 생성
x <- 1:10
y <- x^2

# 산점도
plot(x, y, main = "산점도", xlab = "X", ylab = "Y", col = "blue", pch = 16)

# 선 그래프
plot(x, y, type = "l", main = "선 그래프", xlab = "X", ylab = "Y", col = "red")

# 히스토그램
hist(rnorm(100), main = "히스토그램", xlab = "값", col = "lightblue")

8.1 ggplot2 사용하기 (설치된 경우)

# 아직 설치되지 않았다면 ggplot2 설치 및 로드
# install.packages("ggplot2")
library(ggplot2)

# 샘플 데이터 프레임 생성
plot_data <- data.frame(
  category = c("A", "B", "C", "D"),
  value = c(25, 40, 30, 35)
)

# 막대 그래프 생성
ggplot(plot_data, aes(x = category, y = value)) +
  geom_bar(stat = "identity", fill = "steelblue") +
  labs(title = "막대 그래프 예제", x = "카테고리", y = "값") +
  theme_minimal()

9. 통계 분석

R은 통계 컴퓨팅을 위해 설계되었습니다. 몇 가지 기본 통계 함수를 살펴보겠습니다.

# 샘플 데이터
data <- c(23, 45, 67, 34, 56, 78, 89, 12, 45, 67)

# 기본 통계
print(mean(data))     # 평균
print(median(data))   # 중앙값
print(sd(data))       # 표준편차
print(var(data))      # 분산
print(min(data))      # 최솟값
print(max(data))      # 최댓값
print(summary(data))  # 다섯 숫자 요약

# 상관관계
x <- 1:10
y <- x + rnorm(10)  # 약간의 노이즈 추가
print(cor(x, y))    # 상관계수

# 선형 회귀
model <- lm(y ~ x)
print(summary(model))

10. 파일 작업

R은 파일 읽기와 쓰기를 위한 함수들을 제공합니다.

# 파일에 쓰기
write.csv(students, "students.csv", row.names = FALSE)

# 파일에서 읽기
# read_data <- read.csv("students.csv")
# print(read_data)

# 텍스트 파일 작업
# writeLines(c("Line 1", "Line 2", "Line 3"), "example.txt")
# text_content <- readLines("example.txt")
# print(text_content)

11. 패키지와 라이브러리

R의 강력함은 광범위한 패키지 생태계에서 비롯됩니다.

# 패키지 설치
# install.packages("dplyr")  # 데이터 조작용
# install.packages("ggplot2") # 시각화용

# 패키지 로드
library(dplyr)
library(ggplot2)

# dplyr을 사용한 데이터 조작
# students %>%
#   filter(math_score > 85) %>%
#   select(name, math_score) %>%
#   arrange(desc(math_score))

12. 오류 처리

R은 오류 처리를 위한 메커니즘을 제공합니다.

# 기본 오류 처리
tryCatch({
  result <- 10 / 0
  print(result)
}, error = function(e) {
  print(paste("오류 발생:", e$message))
}, finally = {
  print("이 부분은 항상 실행됨")
})

# try() 사용
result <- try(10 / 0, silent = TRUE)
if (inherits(result, "try-error")) {
  print("나눗셈 실패")
}

13. 고급 주제

13.1 apply 계열 함수

apply 계열 함수는 벡터화된 연산에 강력합니다.

# 행렬 생성
mat <- matrix(1:12, nrow = 3, ncol = 4)
print(mat)

# apply 함수
print(apply(mat, 1, mean))  # 행 평균
print(apply(mat, 2, sum))   # 열 합계

# 리스트용 lapply
my_list <- list(a = 1:5, b = 6:10, c = 11:15)
print(lapply(my_list, mean))  # 각 리스트 요소의 평균

# sapply (단순화된 버전)
print(sapply(my_list, mean))

13.2 문자열 조작

text <- "Hello R Programming"

print(toupper(text))    # 대문자로 변환
print(tolower(text))    # 소문자로 변환
print(nchar(text))      # 문자 수 세기
print(substr(text, 1, 5))  # 부분 문자열 추출

# stringr 패키지 사용 (설치된 경우)
# library(stringr)
# str_split(text, " ")  # 문자열 분할

13.3 날짜와 시간

# 현재 날짜와 시간
current_time <- Sys.time()
print(current_time)

# 날짜 형식화
formatted_date <- format(current_time, "%Y-%m-%d")
print(formatted_date)

# 날짜 연산
today <- Sys.Date()
future_date <- today + 30
print(future_date)

14. 모범 사례

더 나은 R 코드를 작성하기 위한 몇 가지 팁입니다:

  • 의미 있는 변수 이름 사용하기
  • 코드에 적절히 주석 달기
  • 가능하면 반복문 대신 벡터화된 연산 사용하기
  • 스크립트 시작 부분에서 패키지 로드하기
  • 일관된 들여쓰기 사용하기 (2칸 권장)
  • 샘플 데이터로 코드 테스트하기
  • 프로젝트에 버전 관리 사용하기

15. 다음 단계

R 학습을 계속하려면:

  1. 연습: 작은 데이터 분석 프로젝트 작업하기
  2. 패키지 탐색: dplyr, ggplot2, tidyr 및 기타 필수 패키지 학습하기
  3. 온라인 자료: R 문서, Stack Overflow, R-bloggers 활용하기
  4. : Hadley Wickham의 “R for Data Science”
  5. 강좌: R을 사용한 데이터 분석 온라인 강좌 수강하기

R은 통계 컴퓨팅과 데이터 분석을 위한 강력한 도구입니다. 연습을 통해 복잡한 데이터 조작, 아름다운 시각화 생성, 정교한 통계 분석을 수행할 수 있게 될 것입니다.